#ifndef __I_CALCULATE_IMP_H
#define __I_CALCULATE_IMP_H
#include<memory>
#include "IStateManager.h"

namespace Base{
	class BaseCalculateInterfance;
	class ICalculateImp{
		public:
			ICalculateImp() = default;
			virtual ~ICalculateImp() {}
			virtual void start() {stateManager->start();};
			virtual void onstop() {stateManager->onstop();};
			virtual void calculate() = 0;
			virtual void attach(std::shared_ptr<IStateManager> stateManger) = 0;
			virtual void dettach() = 0;
		private:
			std::shared_ptr<IStateManager> stateManager;
	};
}


#endif
